<?php namespace Admin\Controller;

use Hdphp\Controller\Controller;
//分类控制器
class CateController extends CommonController{
	//定义一个属性：用来存实例化后的数据库模型对象
	private $model;
	//构造函数
	public function __construct(){
		//重写父级的构造函数，防止父级的构造函数被覆盖不能使用
		parent::__construct();
		//实例化cate模型
		$model = new \Common\Model\Cate;
		//将实例化的对象存入属性中
		$this->model = $model;
	}
	//分类首页
	public function index(){
		//获取数据库category中所有内容
		$data = $this->model->get();
		//让数据呈树状形式显示，用到递归方法
		$treeData = Data::tree($data,'cname','cid','pid');
		//将树状数据分配给当前页面
		View::with('data',$treeData);
		//显示方法名对应的页面
		View::make();
	}
	//添加顶级分类
	public function addCate(){
		//判断是否为用户提交
		if(IS_POST){
			//模型中的addData方法，返回的有boolean型，如果为真表示自动验证成功数据库添加成功
			if($this->model->addData()){
				//添加成功后跳转
				echo json_encode(array('status'=>1,'message'=>"添加成功"));
				exit;
			}
		//如果没有成功，会获得模型类中的自动验证中的信息
			echo json_encode(array('status'=>0,'message'=>$this->model->getError()));
			exit;
		}
		//显示方法名对应的页面
		View::make();
	}
	//添加子类方法
	public function addScate(){
		//获取传过来的要更改数据的id
		$cid = Q('get.cid',0,'intval');
		//通过该id获取此条数据，将数据分配给页面，页面中的所有分类会用到
		$data = $this->model->where("cid={$cid}")->field('cid,cname')->find();
		//判断是否用户提交
		if(IS_POST){
			//模型中的addData方法，返回的有boolean型，如果为真表示自动验证成功数据库添加成功
			if($this->model->addData()){
				//添加子类成功后跳转
				View::success("添加成功",U('index'));
			}
			//如果没有成功，会获得模型类中的自动验证中的信息
			View::error($this->model->getError());
		}
		//分配当前数据给页面
		View::with('data',$data);
		//显示方法名对应的页面
		View::make();
	}
	//编辑分类
	public function editCate(){
		//获取传过来的要更改数据的id
		$cid = Q('get.cid',0,'intval');
		//判断是否用户提交
		if(IS_POST){
			//模型中的editData方法，返回的有boolean型，如果为真表示自动验证成功数据库添加成功
			if($this->model->editData()){
				//编辑成功后跳转
				View::success("编辑成功",U('index'));
			}
				//如果没有成功，会获得模型类中的自动验证中的信息
				View::error($this->model->getError());
		}
		//通过get传过来的数据从数据中获取对应内容，所有分类和隐藏域会用到
		$oldData = $this->model->where("cid={$cid}")->find();
		//分配旧数据给页面
		View::with('oldData',$oldData);
		//2.处理所属分类（未完成）
		//获取所有的分类
		$data = $this->model->getCate($cid);
		//将树状数据分配给当前页面
		$cate = Data::tree($data,'cname');
		View::with('data',$cate);
		View::make();
	}

	//删除分类
	public function delCate(){
		//接收get传递过来的cid
		$cid = Q('get.cid',0,'intval');
		//1.在删除当前分类之前获得当前分类的pid
		$data = $this->model->where("cid={$cid}")->find();
		$pid = $data['pid'];
		//3.删除数据
		$this->model->where("cid={$cid}")->delete();
		//2.找到要删除的当前的分类所有的子集，然后更改它们的pid为要删除分类的pid
		$this->model->where("pid={$cid}")->update(array('pid'=>$pid));
		//提示删除成功
		View::success("删除成功");
	}
}


 ?>